package com.example.luyennghe;

import java.util.ArrayList;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;

import android.os.AsyncTask;
import android.os.Handler;
import android.util.Log;

public class TranslatorClass {    
    private JSONParser jParser = new JSONParser();
    private String input = "";
    private String output = "";
    
    //constructor
    public TranslatorClass() {
        
    }
    
    //dịch đoạn văn
    public String translate(String text){
        input = text;
        TranslateAsyncTask tr = new TranslateAsyncTask();
        tr.execute();
        try{
            Thread.sleep(2000);            
        }
        catch (Exception ex){
            Log.d("Lỗi", ex.toString());
        }   
        Log.d("output", output); 
        return output;
    }
    
    //asynctask dich doan van ban
    class TranslateAsyncTask extends AsyncTask<String, String, String> {
        
        @Override
        protected void onPreExecute() {
            super.onPreExecute();      
        }
 
        protected String doInBackground(String... args) {
            // Building Parameters            
            List<NameValuePair> paramsTrans = new ArrayList<NameValuePair>();
            paramsTrans.add(new BasicNameValuePair("client", "p"));
            paramsTrans.add(new BasicNameValuePair("text", input));
            paramsTrans.add(new BasicNameValuePair("hl", "vi")); 
            paramsTrans.add(new BasicNameValuePair("sl", "en"));
            paramsTrans.add(new BasicNameValuePair("tl", "vi"));
            paramsTrans.add(new BasicNameValuePair("ie", "UTF-8"));
            paramsTrans.add(new BasicNameValuePair("oe", "UTF-8"));
            paramsTrans.add(new BasicNameValuePair("multires", "1"));
            paramsTrans.add(new BasicNameValuePair("ssel", "0"));
            paramsTrans.add(new BasicNameValuePair("tsel", "0"));
            paramsTrans.add(new BasicNameValuePair("sc", "1"));
            
            JSONObject json = new JSONObject();
            String mes = "";
            try {   
                json = jParser.makeHttpRequest("https://translate.google.com.vn/translate_a/t", "GET",
                        paramsTrans);
                Log.d("reponse: ", json.toString());
                String temp = json.getString("sentences");      //lấy đối tượng có key sentences
                temp = temp.substring(1, temp.length() - 1);    //cắt bỏ dấu []                
                JSONObject jsOb = new JSONObject(temp);         //tạo jsonObject
                mes = jsOb.getString("trans");                  //lấy chuỗi dịch được
                Log.d("result", mes);
                if (!mes.equals("")) {
                    output = mes;
                }
                else{
                    output = "Lỗi. Không thể dịch.";
                }
            }
            catch (Exception ex){
                
            }
            return mes;
        }
         
        protected void onPostExecute(String file_url) {
            Log.d("output onexecute", output);
            
        }
    }
    
    
    public void translateHandler(){  
        final TranslateAsyncTask trans = new TranslateAsyncTask();
        trans.execute();
        Handler _handler = new Handler();
        _handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                if (trans.getStatus() == AsyncTask.Status.RUNNING) {
                    trans.cancel(true);
                }
            }
        }, 30000); // timeout sau ... giây sẽ hiện thông báo không kết nối được.
    }
    
    
}
